设置数字输出逻辑
本指南演示如何配置 OV20i 的数字输出,以根据检验结果控制外部设备。摄像头通过两个数字输出,采用 True/False 逻辑来触发分拣机构、指示灯、警报或其他自动化设备。
何时使用数字输出: 自动分拣系统、通过/不通过指示灯、拒绝机构、警报系统、PLC 通信,或任何需要根据检验结果触发的外部设备。
先决条件
- OV20i 摄像头系统已搭建并连接
- 已启用的配方并配置有检验逻辑
- 要控制的外部设备(用于测试的可选项)
- 对数字输入/输出概念的基本理解
数字输出规格
OV20i 通过 M12 接头提供 2 个数字输出:
Output | Pin # | Wire Color | Function |
---|---|---|---|
Digital Output 1 | 10 | Violet | Configurable output |
Digital Output 2 | 11 | Gray/Pink | Configurable output |
工作逻辑:
- True = 输出 ON (24V)
- False = 输出 OFF (0V)
第1步:访问 Node-RED 编辑器
1.1 导航至 IO Block
- 在 Recipe Editor 中打开当前激活的配方
- 在面包屑菜单中点击“IO Block”
- 点击“Configure IO”进入 Node-RED 编辑器
1.2 验证 Node-RED 界面
检查点: 你应该在左侧看到带节点调色板的 Node-RED 流编辑器。
第2步:添加数字输出节点
2.1 定位 Output 节点
- 在左侧面板(Overview 部分)中找到“Output”节点
- 将“Output”节点拖放到流画布上
- 双击节点进行配置
2.2 配置输出设置
节点配置:
设置 | 选项 | 描述 |
---|---|---|
Output Pin | DO0, DO1 | 选择要控制的物理输出 |
Initial State | OFF, ON | 系统启动时的初始状态 |
Name | Custom text | 用于标识的可选标签 |
2.3 输出配置步骤
- 选择输出针脚:
- DO0 = 数字输出 1(针脚 10,紫色线)
- DO1 = 数字输出 2(针脚 11,灰色/粉色线)
- 设置初始状态:
- OFF = 输出在 OFF 状态启动(推荐)
- ON = 输出在 ON 状态启动
- 为节点命名:
- 使用描述性名称,如 "Reject_Signal" 或 "Pass_Light"
- 点击 "Done" 保存配置
第3步:将逻辑连接到输出
3.1 基本通过/不通过输出
用于简单的通过/不通过指示:
- 添加“Final Pass/Fail Output”节点(如果尚未存在)
- 连接: Final Pass/Fail → Output Node
- 结果:当检验通过时,输出被激活
3.2 反向逻辑(Fail 信号)
在检验失败时触发输出:
- 在通过/不通过与输出之间添加“function”节点
- 配置 function 节点:
// Invert pass/fail signal - ensure boolean output
msg.payload = !msg.payload;
return msg;
- 连接: Final Pass/Fail → Function → Output Node
- 结果:检验失败时输出被激活
3.3 基于分类结果的自定义逻辑
在使用分类或其他检测数据时:
- 添加 "function" 节点 将结果转换为布尔值
- 为您的逻辑配置 function:
// Convert classification result to boolean
// Example: Activate output for specific class
if (msg.payload.class === "Defective") {
msg.payload = true; // Turn output ON
} else {
msg.payload = false; // Turn output OFF
}
return msg;
- 连接: Data Source → Function → Output Node
3.4 布尔值转换示例
对于不同的数据源,请始终转换为布尔值:
来自置信度值:
// Activate if confidence below threshold
msg.payload = (msg.payload.confidence <0.8);
return msg;
来自 ROI 结果:
// Activate if any ROI failed
msg.payload = msg.payload.roi_results.some(roi => !roi.pass);
return msg;
备注
Output Node 需要布尔输入(true/false)。在将逻辑连接到 Output Node 之前,请确保您的逻辑输出布尔值。
第4步:创建脉冲输出(推荐)
4.1 为什么使用脉冲输出
脉冲输出被推荐使用,因为:
- 提供清晰的信号指示
- 防止输出长期处于开启状态
- 更适合触发外部设备
- 便于排查信号时序
4.2 添加 Trigger 节点
- 从 Function 区段添加 "trigger" 节点
- 将其放置在 logic source 与 Output Node 之间
- 双击 trigger 节点 进行配置
4.3 配置触发设置
脉冲配置:
设置 | 建议值 | 描述 |
---|---|---|
Send | True | 初始要发送的信号 |
Then wait | 500ms | 脉冲持续时间 |
Then send | False | 延迟后的信号 |
Extend delay | Disabled | 不要在新消息到来时延长延迟 |
4.4 触发配置步骤
- 首次输出:
- 发送:
boolean
→true
- 这会将输出 ON
- 发送:
- 延迟设置:
- Then wait for:
500
毫秒 - Then send:
boolean
→false
- 这会在延迟后将输出 OFF
- Then wait for:
- 高级选项:
- 如果新消息到达,扩展延迟: 未勾选
- 如果新消息到达,停止现有延迟: 已勾选
- 点击 "Done" 保存
4.5 线脉冲配置
按以下顺序连接节点: Logic Source → Trigger → Output Node
示例流程: Final Pass/Fail → Trigger → Output (DO0)
第5步:部署并测试配置
5.1 部署流程
- 单击 "Deploy" 按钮(右上角)
- 验证部署成功 消息
- 检查节点状态 指示
5.2 监控数字 I/O 状态
使用内置的 I/O 监控屏幕:
- 在主界面导航至 "Digital I/O" 页面
- 实时观察输出状态
- 检查 "Last state change" 时间戳
I/O 状态屏幕显示:
- 当前输出状态 (ON/OFF)
- 上次状态变更时间戳
- 实时状态更新
5.3 测试输出激活
手动测试:
- Add "inject" node 进行测试
- Configure inject node:
- Payload:
boolean
→true
- Name: "Test Output"
- Payload:
- Connect: Inject → Trigger → Output
- Click inject button 以测试输出
- Verify output activation 在 I/O 状态屏幕中
Step 6: Advanced Output Configurations
6.1 Multiple Output Control
同时控制两个输出:
- Add separate output nodes for DO0 and DO1
- Connect same logic source to both outputs
- Use different trigger delays if needed
6.2 Conditional Output Selection
根据条件将输出路由到不同输出:
- Add "switch" node from Function 部分
- Configure routing rules:
// Route based on classification result
if (msg.payload.class === "Large") {
return [msg, null]; // Send to first output (DO0)
} else if (msg.payload.class === "Small") {
return [null, msg]; // Send to second output (DO1)
}
return [null, null]; // No output
- Connect switch outputs to respective output nodes
6.3 Delayed Output Sequences
创建定时输出序列:
- Add multiple trigger nodes with different delays
- Configure sequence timing:
- First trigger: 100ms pulse
- Second trigger: 500ms delay, then 200ms pulse
- Connect in series for sequential activation
Step 7: Integration Examples
7.1 Sorting System Integration
双向分拣设置:
- DO0 (Output 1): Good parts conveyor
- DO1 (Output 2): Reject bin actuator
Final Pass/Fail → Switch Node → Trigger → DO0 (Pass)
→ Trigger → DO1 (Fail)
7.2 Alarm System Integration
多级报警系统:
- DO0: Warning light (minor defects)
- DO1: Alarm horn (major defects)
Classification Logic → Function (Check severity) → Appropriate Output
7.3 PLC Communication
简单 PLC 握手:
- DO0: Inspection complete signal
- DO1: Part reject signal
All Block Outputs → Format for PLC → Trigger → DO0
→ Reject Logic → Trigger → DO1
Step 8: Troubleshooting Output Issues
8.1 Output Not Activating
问题 | 检查项 | 解决方案 |
---|---|---|
无输出信号 | 节点连接 | 确认所有导线连接完成 |
逻辑从不触发 | 输入条件 | 检查通过/失败逻辑配置 |
时序问题 | 触发设置 | 调整脉冲持续时间 |
错误引脚激活 | 输出引脚选择 | 验证 DO0/DO1 配置 |
8.2 使用 I/O 状态进行故障排除
数字 I/O 屏幕有助于识别:
- 当前输出状态: 查看输出是否实际在变化
- 最近状态改变: 验证输出激活的时序
- 状态历史: 跟踪输出行为随时间的变化
使用 I/O 屏幕进行故障排除:
- 输出始终显示 "OFF": 逻辑可能未触发
- 输出始终显示 "ON": 缺少脉冲配置
- 无时间戳更新: 检查 Node-RED 连接
- 状态快速变化: 逻辑可能触发过于频繁
8.3 外部设备问题
问题 | 原因 | 解决方案 |
---|---|---|
设备无响应 | 电压不匹配 | 确认 24V 兼容性 |
间歇性运行 | 布线问题 | 检查 M12 连接器布线 |
响应延迟 | 外部设备时序 | 调整脉冲持续时间 |
步骤 9:测试与验证
9.1 系统性测试
对每个输出进行系统性测试:
测试 | 预期结果 | 状态 |
---|---|---|
手动触发 DO0 | 输出 1 在脉冲持续时间内激活 | ☐ |
手动触发 DO1 | 输出 2 在脉冲持续时间内激活 | ☐ |
通过条件 | 输出正确激活 | ☐ |
失败条件 | 输出正确激活 | ☐ |
I/O 状态更新 | 时间戳显示状态变化 | ☐ |
9.2 生产验证
在投入生产前:
- 使用实际零件和检验条件进行测试
- 验证输出时序是否符合外部设备要求
- 确认电气连接牢固
- 为维护记录输出分配情况
9.3 性能验证
监控以下方面:
- 响应时间: 检测后输出激活的延迟
- 可靠性: 随时间稳定的输出行为
- 时序精度: 脉冲持续时间与配置一致
成功!您的数字输出已就绪
您的数字输出系统现在可以:
- 基于检查结果控制外部设备
- 提供用于可靠触发的脉冲信号
- 支持用于复杂自动化的多种输出配置
- 与 PLCs 和分拣系统集成以实现生产自动化
- 通过内置的 I/O 界面监控输出状态
持续维护
定期系统检查
- 监控 I/O 状态屏以确保稳定运行
- 验证输出时序仍在规格范围内
- 检查 M12 连接器处的电气连接
- 定期测试手动触发以确保系统健康
故障排除资源
- 使用 I/O 状态屏进行实时诊断
- 检查 Node-RED 调试面板以查找逻辑问题
- 验证外部设备规格是否与输出能力匹配
- 记录任何配置变更以备将来参考
下一步
在配置完数字输出后:
- 如有需要,为外部控制设置数字输入触发器
- 配置 PLC 通信以实现集成自动化
- 为生产环境实现安全互锁
- 为系统健康创建自动化监控